<?php

/**
 * consulta actions.
 *
 * @package    catalogo
 * @subpackage consulta
 * @author     idirocco
 * @version    SVN: $Id: actions.class.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $
 */
class consultaActions extends sfActions
{

  public function executeNew(sfWebRequest $request)
  {
  	$articulo_id = 0;
  	$articulo_id = $request->getParameter('articulo_id');
  	if ($articulo_id != 0) //si viene el art como param, intenta asociarlo al form
  	{
  		$nueva_consulta = new ConsultaArticulo();
      $nueva_consulta->setArticuloId($articulo_id);
      $this->form = new ConsultaArticuloForm($nueva_consulta);
  	}
    else 
      $this->form = new ConsultaArticuloForm();
    
    $this->setLayout(false);
    
    //manejo del mensaje de exito
    $display = 'none';
    if ($request->getParameter('display'))
      $display = $request->getParameter('display');
    $this->display = $display;      
  }

  public function executeCreate(sfWebRequest $request)
  {
    //$this->forward404Unless($request->isMethod(sfRequest::POST));     

    $this->form = new ConsultaArticuloForm();

    $this->processForm($request, $this->form);

    $this->setTemplate('new');
  }

  public function executeCreateRespuesta(sfWebRequest $request)
  {
    //$this->forward404Unless($request->isMethod(sfRequest::POST));     

    $this->form = new RespuestaArticuloForm();

    $this->processForm($request, $this->form);

    $this->setTemplate('new');
  }
  
  
  public function executeResponder(sfWebRequest $request)
  {
  	$this->forward404Unless($this->pregunta = $pregunta = Doctrine::getTable('ConsultaArticulo')->find($request->getParameter('id')));  	

//  	if ($pregunta->getConsultaId()) {
	    $respuesta = new ConsultaArticulo();
	    $respuesta->setArticuloId($pregunta->getArticuloId());
	    $respuesta->setConsultaId($pregunta->getId());
	    $respuesta->setNombre($pregunta->getArticulo()->getUsuario()->getNombre());
	    $respuesta->setEmail($pregunta->getArticulo()->getUsuario()->getEmail());
	    $this->form = new RespuestaArticuloForm($respuesta);
//  	}
//	  else {
//      $this->form = new RespuestaArticuloForm();	  	
//	  }
        
    //manejo del mensaje de exito
    $display = 'none';
    if ($request->getParameter('display')){
      $display = $request->getParameter('display');
      $this->setLayout(false);
    }
    $this->display = $display;      
  }  

  protected function processForm(sfWebRequest $request, sfForm $form)
  {
    $form->bind($request->getParameter($form->getName()), $request->getFiles($form->getName()));
    if ($form->isValid())
    {
      $consulta_articulo = $form->save();
      if ($consulta_articulo->getConsultaId()==null) //si es una pregunta
      {
        $this->redirect('consulta/new?display=block&articulo_id=' . $consulta_articulo->getArticuloId());
      }
      else 
      {
	      $consulta_articulo->setActiva(true);
	      $consulta_articulo->save();
	      $this->notificarInteresadoRespuesta($consulta_articulo);
	      $this->redirect('consulta/responder?display=block&id=' . $consulta_articulo->getConsultaId());      	
      } 
    }
    else
    {
      $this->setLayout(false);
    }
  }  

  protected function notificarInteresadoRespuesta($consulta)
  {

    $articulo = $consulta->getArticulo();
    $pregunta = $consulta->getConsultaArticulo();
    $email_interesado = $pregunta->getEmail();
    
    $nombre_interesado = $pregunta->getNombre();
                        
    $href_rta = $this->getController()
                                    ->genUrl(array('sf_route' => 'ficha_aviso', 
                                                   'sf_subject' => $articulo));
                    
    $enlace_ver = '<a href="' . $_SERVER["SERVER_NAME"].'/'.substr($href_rta, strpos($href_rta, '/', 0)) . 
                    '#preguntas">aquí</a>';                                         
                
    $enlace_pqn = '<a href="' . $_SERVER["SERVER_NAME"] . '">PorQueNuevo</a>';    
    
    // send an email to the user
    $body = <<<EOF
Hola {$nombre_interesado},

Respondieron la consulta que realizaste sobre el anuncio "{$articulo->getTitulo()}".

Podés ver la respuesta haciendo click {$enlace_ver}.

Muchas gracias por elegirnos.
El equipo de {$enlace_pqn}.
EOF;

    $message = $this->getMailer()->compose();
    $message->setSubject('Respondieron tu consulta sobre el anuncio "' . $articulo->getTitulo() . '"');
    $message->setTo($email_interesado);
    $message->setFrom(array('info@porquenuevo.com.ar' => 'PorQueNuevo'));
    $message->setBody(nl2br($body), 'text/html');
 
    $this->getMailer()->send($message);
  } 
}